package com.example.mq.mqserver.core;

import java.io.Serializable;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 言初
 * Date: 2024-09-10
 * Time: 17:32
 */
/*
    消息类中对应的属性类
    为了实现序列化和反序列化所以需要让这个类实现  Serializable 接口

 */
public class BasicProperties implements Serializable {
    // 消息的唯一身份表示，为了保证这个id的唯一性，所以使用uuid来作为消息的id
    private String messageId;
    // 是一个消息上带有的内容，是和绑定中的bindingKey做匹配的
    // 如果当前的交换机类型是 DIRECT , 此时routingKey 就表示要转发的队列名
    // 如果当前的交换机类型是 FANOUT , 此时 routingKey 无意义（不使用），直接把消息转发给所有的队列
    // 如果当前的交换机类型是 TOPIC , 此时routingKey 就要和bindingKey 做匹配，符合要求的才能转发给对应的队列
    private String RoutingKey;
    // 这个属性表示消息是否要持久化存储，1表示不持久化，2表示持久化
    private int deliverMode = 1 ;
    // 在RabbitMQ 中，这个类里面还有很多别的属性，但是我们在这里就暂时先不考虑了


    @Override
    public String toString() {
        return "BasicProperties{" +
                "messageId='" + messageId + '\'' +
                ", RoutingKey='" + RoutingKey + '\'' +
                ", deliverMode=" + deliverMode +
                '}';
    }

    public String getMessageId() {
        return messageId;
    }

    public void setMessageId(String messageId) {
        this.messageId = messageId;
    }

    public String getRoutingKey() {
        return RoutingKey;
    }

    public void setRoutingKey(String routingKey) {
        RoutingKey = routingKey;
    }

    public int getDeliverMode() {
        return deliverMode;
    }

    public void setDeliverMode(int deliverMode) {
        this.deliverMode = deliverMode;
    }
}
